package sort;

import java.util.Arrays;

public class SelectSort {

    public static void main(String[] args) throws Exception {
        int total = 1000000;
        int[] list = new int[total];
        for (int i = 0; i < total; i++) {
            int rand = (int) (Math.random() * total);
            list[i] = rand;
        }

        long startTime = System.currentTimeMillis();
        selectSort(list);
        long end = System.currentTimeMillis();
        System.out.println(end - startTime);
    }

    public static void selectSort(int[] arr) {

        for (int i = 0; i < arr.length - 1; i++) {//遍历长度-1次
            int minIndex = i;
            int min = arr[i];
            for (int j = i + 1; j < arr.length; j++) {
                if (min > arr[j]) {//假定的最小值，不一定是最小
                    min = arr[j];//重置min，并不改变arr[]数组内的值
                    minIndex = j;//重置minIndex
                }
            }
            if (minIndex != i) {//最小值下标不是i，表示最小值不是它自己，则进行下面的交换
                arr[minIndex] = arr[i];//将当前轮下标i（当前轮次第一个）对应的值赋给最小值对应的下标的值，覆盖原来的值
                arr[i] = min;//让之前拿到的最小值min赋给最小值的当前轮下标i对应的值
            }
        }
    }
}
